Handle off-by-one errors due to rounding
authorKristian Rietveld <kris@gtk.org>
Tue, 12 Oct 2010 15:39:26 +0000 (17:39 +0200)
committerKristian Rietveld <kris@gtk.org>
Tue, 12 Oct 2010 17:12:44 +0000 (19:12 +0200)
gtk/tests/treeview-scrolling.c

index ef7f12ca428467f0483df7907ad69cfe9f065aff..19c5dc2ae3ea71fcc4f22ef1909c568a0bfd7a98 100644 (file)
@@ -26,6 +26,7 @@
 
 #include <gtk/gtk.h>
 #include <unistd.h>
+#include <math.h>
 
 #define VIEW_WIDTH 320
 #define VIEW_HEIGHT 240
@@ -250,7 +251,7 @@ get_row_start_for_index (GtkTreeView *tree_view, int index)
 static enum Pos
 get_pos_from_path (GtkTreeView   *tree_view,
                   GtkTreePath   *path,
-                  gint           row_height,
+                  gdouble        row_height,
                   GtkAdjustment *vadj)
 {
        int row_start;
@@ -272,7 +273,7 @@ test_position_with_align (GtkTreeView  *tree_view,
                          enum Pos      pos,
                          gint          row_y,
                          gint          row_start,
-                         gint          row_height,
+                         gdouble       row_height,
                          gdouble       row_align)
 {
        gboolean passed = TRUE;
@@ -333,7 +334,8 @@ test_position_with_align (GtkTreeView  *tree_view,
                         *      (ie. the row's center is at the
                         *       center of the view).
                         */
-                       if (row_y != (int)(vadj->page_size / 2 - row_height / 2))
+                       gdouble middle = vadj->page_size / 2 - row_height / 2;
+                       if (row_y != ceil (middle) && row_y != floor (middle))
                                passed = FALSE;
                }
                break;
@@ -372,8 +374,8 @@ test_position_with_align (GtkTreeView  *tree_view,
 
 static gboolean
 test_position_without_align (GtkTreeView *tree_view,
-                            gint         row_start,
-                            gint         row_height)
+                            gdouble      row_start,
+                            gdouble      row_height)
 {
        GtkAdjustment *vadj = gtk_tree_view_get_vadjustment (tree_view);